#pragma once
#include <memory>
#include <chrono>
#include <string>
#include <boost/make_shared.hpp>
#include <vector>
#include <pcl/point_cloud.h>
#include <pcl/io/pcd_io.h>
#include <pcl/point_types.h>
#include <cmath>
//ros
// 定义一个点结构体
struct My_Point {
    double x;
    double y;
    double z;
    double angle;
    double distance;
    int attribute;  //阴阳角属性 -1 或1 0未定义
    std::vector<std::pair<int, double>> p_distance; //包含 本点坐标和 int点之间的距离distance
};
struct My_Seat {
    double x;
    double y;
    double z;
    double wx;
    double wy;
    double wz;
    double w0;
};
//namespace std
class Angle_Point_Cloud
    {
    public:
        Angle_Point_Cloud()
        {
           
        }
        ~Angle_Point_Cloud(){}
        std::string filename;
        std::vector<My_Point> my_point;
        My_Seat my_seat;
        void clear(void);
        void add_point(pcl::PointXYZ &point_temp);
        void add_point(pcl::PointXYZ &point_temp,double s_angle,double dis,int attr);
        void add_point(My_Point &mp);
        void write_cloud(void);
        void read_cloud(void);
        void set_input_cloud(pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_);
        void claculate_distance(void);

};

